// pages/todos/todos.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    input:'',
    leftCount:0,
    flag:true,
    todos :[
      // { name: "JavaScript", completed: true },
      // { name: "CSS", completed: false },
      // { name:"HTML" , completed: true }
    ]
  },

  // 页面后调用
  onLoad: function () {
     // 从本地存储中 获取 todos 数组 然后同步到 data 中的 todos中
    // var todos = wx.getStorageSync('todos') || [];
    this.setData({
      todos: (wx.getStorageSync('todos') || [])
    })
    this.getLeftCount();
  },

  // 添加任务项 事件处理函数
  addTodoHandle:function(){
    
    if(!this.data.input) return;
    
    var todos = this.data.todos;
    var item = { name:this.data.input, completed:false };
    todos.push(item);
    // todos.push(item)
    // 将改变后的数据同步到本地存储中
    wx.setStorageSync('todos', todos);
    this.setData({ todos:this.data.todos, input : ""});
    this.getLeftCount();

   
    
  },
  // 输入框中的数据改变时 触发该事件处理函数
  changedHandle:function(e){
    this.setData({ input: e.detail.value });
  },

  // 点击切换完成状态
  toggleTodoHandle:function(e){
    var item = this.data.todos[e.currentTarget.dataset.index];
    item.completed = !item.completed;
    // var leftCount = 
    this.setData({ todos : this.data.todos });
    this.getLeftCount();
    wx.setStorageSync('todos', this.data.todos);

  },
  // 获取未完成的任务 个数
  getLeftCount:function(){
    var todos = this.data.todos;
    if (!todos.length){
      // console.log(11111+ "---------------------")
      this.setData({ leftCount: 0})
    }
    var list =todos.filter(item=>{
      return item.completed === false;
    })
    // console.log(list);
    this.setData({ leftCount: list.length })
  },
  // 点击叉号 删除该任务项
  deleteItem: function(e){

    var index = e.currentTarget.dataset.index;
    var todos = this.data.todos;
    todos.splice(index, 1);
    this.setData({ todos: todos });
    wx.setStorageSync('todos', todos);
    this.getLeftCount();
  },

  // 点击 Clear completed 清除所有已完成的
  clearCompleted:function(){
    var todos = this.data.todos;
    // 通过 数组的 filter 方法 将 todos 中的completed 的值为true 过滤除去 只保留值为false的
    var list = todos.filter(item => {
      return item.completed === false;
    })
    wx.setStorageSync('todos', list)
    this.setData({ todos: list });
  },

  toggleAll:function(){
    var flag = !this.data.flag;
    this.data.todos.forEach(item=>{
      item.completed = flag;
    });
    this.setData({ todos : this.data.todos , flag : flag});
    this.getLeftCount();
  }
})